package com.ultrawise.survey.common.printfile;

import java.lang.reflect.Field;
import java.util.Date;
import java.util.HashMap;
import java.util.Map;

import com.ultrawise.survey.common.utils.DateUtils;

public class EntityObjectValues {
	public static Map<String, Object> setValue(Object bookval) {
		// 获取文书的对象中的变量信息
		Field[] bval = bookval.getClass().getDeclaredFields();//
		Map<String, Object> map = new HashMap<String, Object>();
		// 变量信息重新赋值到Map对象中.
		for (int i = 0; bval != null && i < bval.length; i++) {
			String bvalname = bval[i].getName();
			// System.out.println(i + ":::" + bvalname);
			Object value = getFieldVlaue(bookval, bval[i].getName());
			value = objectFormat(value);
			map.put(bvalname, value);
		}
		return map;
	}

	/*****
	 * 获取对象中的变量信息并且返回对象的值信息
	 * 
	 * @param obj
	 * @param fieldName
	 * @return
	 */
	public static Object getFieldVlaue(Object obj, String fieldName) {
		if (obj != null) {
			Class<? extends Object> c = obj.getClass();
			try {
				Field field;
				try {
					field = c.getDeclaredField(fieldName);
					field.setAccessible(true);
				} catch (NoSuchFieldException e) {
					return "";
				}
				return field.get(obj);
			} catch (Exception e) {
				return "";
			}
		} else
			return "";
	}

	/****
	 * 把object对象类型反转--时间转化格式化字符串、数字转化字符串、数组取第一个值
	 * 
	 * @param value
	 * @return
	 */
	private static Object objectFormat(Object value) {
		if (value == null)
			return "";

		String objname = value.getClass().getSimpleName();
		// 时间类型的转化字符串，格式化
		if ("Date".equalsIgnoreCase(objname)) {
			Date tp = (Date) value;
			value = DateUtils.toString(tp, "yyyy-MM-dd");
		}
		// 数字类型转化字符串
		if ("Integer".equalsIgnoreCase(objname)) {
			Integer tp = (Integer) value;
			value = String.valueOf(tp);
		}
		// 数组类型只取第一个数据
		if ("String[]".equalsIgnoreCase(objname)) {
			String[] tp = (String[]) value;
			value = (tp != null && tp.length > 0) ? tp[0] : "";
		}
		return value;
	}

}
